Mechanized Relational Verification of Concurrent Programs with Continuations
نویسندگان
چکیده
Concurrent higher-order imperative programming languages with continuations are very flexible and allow for the implementation of sophisticated programming patterns. For instance, researchers and practitioners have argued that the implementation of web servers can be simplified by using a programming pattern based on continuations. This programming pattern can, in particular, help simplify keeping track of the state of clients interacting with the server. However, such advanced programming programming languages are very challenging to reason about. In this paper we present the first completely formalized tool for interactive mechanized relational verification of programs written in a concurrent higher-order imperative programming language with continuations (call/cc and throw). In more detail, we develop a novel logical relation which can be used to give mechanized proofs of contextual refinement.We use ourmethod on challenging examples and prove, e.g., that a rudimentary web server implemented using the continuation-based pattern is contextually equivalent to one implemented without the continuation-based pattern.
منابع مشابه
Mechanized Relational Verification of Concurrent Programs with Continuations: Technical Appendix
متن کامل
A Separation Logic for Concurrent Randomized Programs
We present a concurrent separation logic with support for probabilistic reasoning. As part of our logic, we extend the idea of coupling, which underlies recent work on probabilistic relational logics, to the setting of programs with both probabilistic and non-deterministic choice. To demonstrate our logic, we verify a variant of a recent randomized concurrent counter algorithm. All of our resul...
متن کاملDesign and implementation of static analyses for higher-order languages
interpretation-based static analyzers. This insight provided a way of extracting the common patterns in the design and implementation of static analyzers and led to the idea of considering abstract interpretation as a particular case of computational effects, which can be abstracted over using a concept of monads from functional programming. This idea was presented in my work on monadic abstrac...
متن کاملTowards a Formal Verification of a Secure and Distributed System and Its Applications1
This paper presents research towards the formal speciication and veriication of a secure distributed system and secure application programs that run on it. We refer to the whole system | from hardware to application programs written in a concurrent programming language | as the Silo, and to a simpliied view of the Silo as the miniSilo. Both miniSilo and Silo consist of a collection of microproc...
متن کاملTowards a Formal Verification of a Secure Distributed System and Its Applications1
This paper presents research towards the formal speciication and veriication of a secure distributed system and secure application programs that run on it. We refer to the whole system | from hardware to application programs written in a concurrent programming language | as the Silo, and to a simpliied view of the Silo as the miniSilo. Both miniSilo and Silo consist of a collection of microproc...
متن کامل